import * as u from './util'
import axios from 'axios'
import webMap from './map.web'
class Location_wx {
  getAddress (callback) {
    const self = this
    if (window.wx) {
      axios.get('/auth/getAuthConfig.json', {
        params: {
          client: 'wx',
          url: $tool.isIosOrAndroid() === 'android' ? location.href.split('#')[0] : window.initUrl
        }
      }).then(res => {
        let rs = res.data
        let data = rs.data
        if (rs.code == '0' && data && data.signature) {
          wx.config({
            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
            appId: data.appId, // 必填，公众号的唯一标识
            timestamp: data.timestamp, // 必填，生成签名的时间戳
            nonceStr: data.nonceStr, // 必填，生成签名的随机串
            signature: data.signature, // 必填，签名
            jsApiList: ['getLocation'] // 必填，需要使用的JS接口列表
          })
          window.wx.ready(function () {
            window.wx.getLocation({
              type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
              success: data => {
                // var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
                // var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
                // var speed = res.speed; // 速度，以米/每秒计
                // var accuracy = res.accuracy; // 位置精度
                Promise.resolve(data).then(webMap.geoconv).then(webMap.geocoder).then(res => {
                  if (res && res.status === 0) {
                    let ret = res.result
                    const transPoint = gcoord.transform([ret.location.lng, ret.location.lat], gcoord.BD09, gcoord.GCJ02);
                    callback({
                      province: ret.addressComponent.province,
                      city: ret.addressComponent.city,
                      district: ret.addressComponent.district,
                      address: ret.formatted_address,
                      lon: transPoint[0],
                      lat: transPoint[1]
                    })
                  }else{
                    console.error('wx获取位置出错!')
                  }
                })
              },
              // 用户拒绝获取地理位置
              cancel: callback,
              // 获取失败
              fail: callback,
              // 获取错误
              error: callback,
            })
          })
          window.wx.error(function (res) {
            console.error('微信接口加载失败:', res)
          })
        } else {
          callback(rs)
        }
      }).catch(err => {
        console.error('无法获取微信鉴权配置:', err)
        callback({code: -1, msg: '无法获取微信鉴权配置'})
      })
    } else {
      u.loadScript('https://res.wx.qq.com/open/js/jweixin-1.4.0.js', function (rs) {
        if (rs && window.wx) {
          self.getAddress(callback)
        } else {
          callback({code: -1, msg: '网络异常'})
        }
      })
    }
  }
}
export default Location_wx
